package org.brisling.base.repository;

import java.io.Serializable;
import java.util.List;

import org.springframework.data.domain.Sort;
import org.springframework.data.repository.NoRepositoryBean;


/**
 * 树结构业务实体的基础接口，所有树结构实体类必须实现该接口
 * @author wang
 *
 * @param <T>	继承 <code>HierachicalBeanDataModeler</code> 接口的实体
 * @param <ID>	继承 <code>CrudRepository</code> 接口的实体ID
 */
@NoRepositoryBean
public interface BaseTreeRepository<T, ID extends Serializable> extends BaseRepository<T, ID> {
	
	/**
	 * 返回父节点为空的所有节点(根节点)
	 * @return List 类定义的泛型对象T的List集合
	 * @param sort 排序对象
	 */
	List<T> findByParentidIsNull(Sort sort);
	
	
	
	
	
	/**
	 * 查找指定节点的所有子节点
	 * @param t	父节点对象
	 * @return List 子节点集合
	 */
//	List<T> findByParentid(HierachicalBeanDataModeler<T> t);
	
	
	
	/**
	 * 查找指定节点的所有子节点
	 * @param id	父节点实体对象唯一编码
	 * @param sort 排序对象
	 * @return List 子节点集合
	 */
	List<T> findByParentid(Long id,Sort sort);

}
